home *** CD-ROM | disk | FTP | other *** search
- /*******************************************************************
-
- ModuleEntry.c
-
- Since we want now that DOpus does start our module on its startup,
- we need to modify one flag (MODULE_FLAGS). This would be to do in
- the includes/Project.h, but it's also possible here.
-
- *********************************************************************/
-
- #define PARENT
- #include "/includes/Project.h"
-
-
- ModuleInfo module_info =
- {
- MODULE_VER_NUMBER,
- MODULE_NAME,
- MODULE_CATALOG,
- MODULE_FLAGS | MODULEF_CALL_STARTUP, // Here we add the needed flag
- MODULE_FUNC_COUNT,
-
- { FUNC0_ID, COMMAND_0, FUNC0_DESCRIPTION, FUNC0_FLAGS, FUNC0_TEMPLATE }
- };
-
- // now you must modify some lines, if your module should have more than
- // one command buildin...
- // For example we make here at all 3 commands. The 3. command itself is a
- // hidden command (is not shown in the commandlist...)
-
- #if MODULE_FUNC_COUNT-1
-
- ModuleFunction module_func[MODULE_FUNC_COUNT-1] =
- {
- { FUNC1_ID, COMMAND_1, FUNC1_DESCRIPTION, FUNC1_FLAGS, FUNC1_TEMPLATE },
- { FUNC2_ID, COMMAND_2, FUNC2_DESCRIPTION, FUNC2_FLAGS, FUNC2_TEMPLATE }
- };
-
- #endif
-
-
- // If you are a really nice programmer, you should provide the version
- // string with some extra \0 's...
-
- static char version[] = "\0$VER: " VERSION_STRING " " __AMIGADATE__ "\0";
-
- /********************************************************************/
- // Now we are ready to enter our program code...
-
- int __asm __saveds L_Module_Entry( register __a0 char *args,
- register __a1 struct Screen *screen,
- register __a2 IPCData *ipc,
- register __a3 IPCData *main_ipc,
- register __d0 ULONG mod_id,
- register __d1 EXT_FUNC(func_callback) )
- {
- // now we can (should) get an special value for mod_id
- // as action we do here launch one of our commands (the requester)
- // it will be done with EXT_FUNC() as ARexx command
- // since it will be launched async, we have already one chance
- // to detach an own process...
-
- // NOTE: If you use the MODULEF_STARTUP flag you'll get in some
- // cases no valid screenpointer !! (not mentioned in the SDK)
-
- // at first we need a structure to call the func_callback()
-
- struct command_packet cp;
-
- switch( mod_id )
- {
- case FUNC0_ID : ExampleRequest( args, screen, ipc );
- break;
-
- case FUNC1_ID : OwnWindow( args, screen );
- break;
-
- case FUNC2_ID : HiddenCommand( args, ipc, main_ipc );
- break;
-
- case FUNCID_STARTUP:
-
- // now fill the command_packet
- cp.command = "command Beep"; //ExampleRequest Called on Startup";
- // refer also the ARexx description of DOpus
-
- cp.flags = COMMANDF_RESULT;
- cp.result = NULL;
-
- // and do the command
-
- func_callback( EXTCMD_SEND_COMMAND, IPCDATA(ipc), &cp );
-
- if( cp.result )
- FreeVec( cp.result );
-
- break;
- }
-
- return 1;
- }
-
-
-